Wczytywanie biblioteki EDAWR zawierającej zbiór “tb”. Pomijanie pomiarów zawierających brakujące dane.

library(EDAWR)
tb_data <- tb[complete.cases(tb), ]

Krótkie podsumowanie danych:

knitr::kable(summary(tb_data))
country year sex child adult elderly
Length:3380 Min. :1995 Length:3380 Min. : 0.0 Min. : 0 Min. : 0.0
Class :character 1st Qu.:2000 Class :character 1st Qu.: 25.0 1st Qu.: 1130 1st Qu.: 85.0
Mode :character Median :2005 Mode :character Median : 75.0 Median : 2593 Median : 230.0
NA Mean :2004 NA Mean : 472.6 Mean : 10883 Mean : 1255.5
NA 3rd Qu.:2009 NA 3rd Qu.: 261.2 3rd Qu.: 6712 3rd Qu.: 642.8
NA Max. :2013 NA Max. :25661.0 Max. :731540 Max. :125991.0

Liczba zachorowań z podziałem na płeć:

by_sex <- group_by(tb_data, sex) %>% summarize(sum(child), sum(adult), sum(elderly))
knitr::kable(by_sex)
sex sum(child) sum(adult) sum(elderly)
female 827908 13481615 1301076
male 769649 23304306 2942501

Wykres liniowy sumarycznej liczby zachorowań z podziałem na grupę wiekową w kolejnych latach:

sums_by_year = function(dataset, country_choice = NA) {
  filtered_dataset = if (is.na(country_choice))
                       dataset
                     else
                       dataset %>% filter(country == country_choice)
  result = filtered_dataset %>%
           group_by(year) %>%
           summarize(
             child = sum(child),
             adult = sum(adult),
             elderly = sum(elderly)
           )
}

plot_tb_data = function(dataset, country = NA) {
  title = if (is.na(country)) "Zachorowania na gruźlicę w grupach wiekowych" else country
  grouped_data = sums_by_year(dataset, country)
  print(length(grouped_data$year))
  matplot(x = grouped_data$year, y = grouped_data %>% select(-year),
          type = c("b"), pch = 1,
          main = title, ylab = "Liczba zachorowań", xlab = "Rok badania")
  legend("topleft", legend=c("Dzieci", "Dorośli", "Starsi"), col = 1:3, pch = 1)
}

plot_tb_data(tb_data)
## [1] 19

Analogiczne do powyższego wykresy dla poszczególnych krajów:

countries = unique(tb_data$country)
for (i in countries) {
  plot_tb_data(tb_data, i)
}